A content addressable memory (CAM) is a type of computer memory that allows for high speed searches of a specific data pattern stored within its memory cells, which are organized as an array having rows and columns. A different data pattern typically is stored in each row of the CAM. Data to be checked is supplied to an input of the CAM, and the CAM then in a single compare cycle operation compares the input to multiple rows of the CAM array. If the CAM determines that the input matches one or more rows, the CAM returns a signal indicating the row or rows that match the input data. Typically, if more than one row matches the input data, the CAM returns a signal indicating only one of the matching rows based on some priority scheme. For example, the highest matching row in the CAM is indicated.
Because each entry of a CAM device is typically checked in parallel in a lookup operation, CAM devices are well suited for applications in which high speed lookups are needed or required. For example, in the context of network switching, CAM devices are often utilized for high throughput packet forwarding and classification operations. However, typical CAM devices are expensive in terms of power consumption and large area typically associated with such devices.